Graphics hardware and, more specifically, graphics processing units (“GPUs”), employ a processing sequence that operates on, and is based on, polygonal primitives. Commonly, such polygonal primitives are triangles, with the surfaces of the objects being imaged by graphics display hardware being represented as a mesh of triangles. In one implementation, the surface is densely sampled, forming many small triangles. An alternative approach uses a lower density mesh. While both of these approaches work, the first wastes resources if the surface is viewed from a distance, and the second introduces sampling artifacts when the surface is viewed up close.
Arbitrarily complex geometric shapes can be represented using compact descriptions. For example, a cube object can be represented as a polygonal representation comprising a list of eight vertexes and six sides, or, even more compactly, a cube object can be represented as the output of a cube-generating procedure, whose inputs are position coordinates and size. A more common example, often used by illustration programs, is the representation of curves according to Bézier control points, allowing a complex curved path to be mathematically described with only a few data points.
Current GPU processing, however, relegates such geometric representations to the prerasterization stages. The surfaces to be displayed are, instead, expanded into polygons, such as triangles, which are then provided to the transformation and setup stages of the processing sequence performed by the GPU. In using triangles to approximate a surface, level-of-detail (“LOD”) management becomes significant. Specifically, LOD is used to avoid under-sampling, or tessellation, artifacts when a curved surface is viewed up close, and to avoid wasting resources when a densely triangulated surface is viewed from far away. LOD management can be especially difficult, however, when dealing with changes in resolution when zooming in on shapes and any error results in either a waste of resources, which is often perceived by the user as slowness, or tessellation, which is perceived by the user as an image that lacks sharpness and detail.